/**
 * @file    elog_cfg.h
 * @brief   EasyLogger配置头文件
 * @details 本文件包含了EasyLogger日志库的所有配置选项，包括：
 *          - 基础输出功能配置（输出级别、断言等）
 *          - 缓冲区大小配置（行缓冲区、行号长度等）
 *          - 过滤器功能配置（标签、关键字过滤等）
 *          - 颜色输出配置（ANSI颜色代码等）
 *          - 格式化输出配置（时间、级别、标签等）
 *          - 异步输出配置（缓冲区大小、线程优先级等）
 *          - 缓冲输出配置（缓冲区大小、刷新策略等）
 */

#ifndef _ELOG_CFG_H_
#define _ELOG_CFG_H_

/* ---------------------------------------------- 基础输出配置 -------------------------------------------- */
#define ELOG_OUTPUT_ENABLE                                                      /* 启用日志输出功能 */
#define ELOG_OUTPUT_LVL                          ELOG_LVL_VERBOSE               /* 设置静态输出日志级别 */
#define ELOG_ASSERT_ENABLE                                                      /* 启用断言检查功能 */

/* ---------------------------------------------- 缓冲区配置 ---------------------------------------------- */
#define ELOG_LINE_BUF_SIZE                       256                            /* 每行日志的缓冲区大小 */
#define ELOG_LINE_NUM_MAX_LEN                    5                              /* 输出行号的最大长度 */

/* ---------------------------------------------- 过滤器配置 ---------------------------------------------- */
#define ELOG_FILTER_TAG_MAX_LEN                  30                             /* 过滤器标签的最大长度 */
#define ELOG_FILTER_KW_MAX_LEN                   16                             /* 过滤器关键字的最大长度 */
#define ELOG_FILTER_TAG_LVL_MAX_NUM              5                              /* 标签级别的最大数量 */
#define ELOG_NEWLINE_SIGN                        "\r\n"                         /* 输出换行符 */

/* ---------------------------------------------- 颜色输出配置 -------------------------------------------- */
//#define ELOG_COLOR_ENABLE                                                       /* 启用日志颜色输出功能 */
#define ELOG_COLOR_ASSERT                        (F_MAGENTA B_NULL S_NORMAL)    /* 断言级别日志颜色 */
#define ELOG_COLOR_ERROR                         (F_RED B_NULL S_NORMAL)        /* 错误级别日志颜色 */
#define ELOG_COLOR_WARN                          (F_YELLOW B_NULL S_NORMAL)     /* 警告级别日志颜色 */
#define ELOG_COLOR_INFO                          (F_CYAN B_NULL S_NORMAL)       /* 信息级别日志颜色 */
#define ELOG_COLOR_DEBUG                         (F_GREEN B_NULL S_NORMAL)      /* 调试级别日志颜色 */
#define ELOG_COLOR_VERBOSE                       (F_BLUE B_NULL S_NORMAL)       /* 详细级别日志颜色 */

/* ---------------------------------------------- 格式化输出配置 ------------------------------------------ */
#define ELOG_FMT_USING_FUNC                                                     /* 启用函数名输出格式化 */
#define ELOG_FMT_USING_DIR                                                      /* 启用目录名输出格式化 */
#define ELOG_FMT_USING_LINE                                                     /* 启用行号输出格式化 */

/* ---------------------------------------------- 异步输出配置 -------------------------------------------- */
//#define ELOG_ASYNC_OUTPUT_ENABLE                                                /* 启用异步输出模式 */
#define ELOG_ASYNC_OUTPUT_LVL                    ELOG_LVL_ASSERT                /* 异步模式的最高输出级别 */
#define ELOG_ASYNC_OUTPUT_BUF_SIZE               (ELOG_LINE_BUF_SIZE * 10)      /* 异步输出缓冲区大小 */
#define ELOG_ASYNC_LINE_OUTPUT                                                  /* 异步输出每条日志以换行符结束 */
#define ELOG_ASYNC_OUTPUT_USING_PTHREAD                                         /* 使用POSIX pthread实现 */

/* ---------------------------------------------- 缓冲输出配置 -------------------------------------------- */
//#define ELOG_BUF_OUTPUT_ENABLE                                                  /* 启用缓冲输出模式 */
#define ELOG_BUF_OUTPUT_BUF_SIZE                 (ELOG_LINE_BUF_SIZE * 10)      /* 缓冲输出缓冲区大小 */

#endif /* _ELOG_CFG_H_ */
